/*
** Copyright (C) 2010 Calin Radoni
**
** This file is part of CHScanner.
**
** CHScanner is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** CHScanner is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with CHScanner. If not, see <http://www.gnu.org/licenses/>.
*/

#pragma once

#include "MWmi_Win32_CDROMDrive.h"
#include "MWmi_Win32_DesktopMonitor.h"
#include "MWmi_Win32_DiskDrive.h"
#include "MWmi_Win32_DiskPartition.h"
#include "MWmi_Win32_Group.h"
#include "MWmi_Win32_OperatingSystem.h"
#include "MWmi_Win32_PhysicalMemory.h"
#include "MWmi_Win32_Processor.h"
#include "MWmi_Win32_QuickFixEngineering.h"
#include "MWmi_Win32_Share.h"
#include "MWmi_Win32_UserAccount.h"
#include "MWmi_Win32_VideoController.h"
#include "MWmi_Win32_LoggedUser.h"

enum MWmiType
{
	__wmitW32Empty               = 0x0000,

	__wmitW32CDROMDrive          = 0x0001,
	__wmitW32DesktopMonitor      = 0x0002,
	__wmitW32DiskDrive           = 0x0004,
	__wmitW32DiskPartition       = 0x0008,

	__wmitW32Group               = 0x0010,
	__wmitW32OperatingSystem     = 0x0020,
	__wmitW32PhysicalMemory      = 0x0040,
	__wmitW32Processor           = 0x0080,

	__wmitW32QuickFixEngineering = 0x0100,
	__wmitW32Share               = 0x0200,
	__wmitW32UserAccount         = 0x0400,
	__wmitW32VideoController     = 0x0800,

	__wmitW32LoggedUser          = 0x1000
};

enum MWmiStatus
{
	__wmisUnknown,
	__wmisOpen,
	__wmisClosed
};

class MWmiData
{
public:
	MWmiData(void);
	~MWmiData(void);

	MWmi_Win32_CDROMDrive          wmiCDROMDrive;
	MWmi_Win32_DesktopMonitor      wmiDesktopMonitor;
	MWmi_Win32_DiskDrive           wmiDiskDrive;
	MWmi_Win32_DiskPartition       wmiDiskPartition;
	MWmi_Win32_Group               wmiGroup;
	MWmi_Win32_OperatingSystem     wmiOperatingSystem;
	MWmi_Win32_PhysicalMemory      wmiPhysicalMemory;
	MWmi_Win32_Processor           wmiProcessor;
	MWmi_Win32_QuickFixEngineering wmiQuickFixEngineering;
	MWmi_Win32_Share               wmiShare;
	MWmi_Win32_UserAccount         wmiUserAccount;
	MWmi_Win32_VideoController     wmiVideoController;
	MWmi_Win32_LoggedUser          wmiLoggedUser;

	MWmiType   xType;
	MWmiStatus xStatus;

	void Initialize(void);

	void LoadFromPointer(MWmiData*);
};
